package com.drug.mingkang.service;

import com.drug.mingkang.model.AuditRecord;
import com.drug.mingkang.model.HqPdetail;
import com.drug.mingkang.model.HqPlan;
import com.drug.mingkang.utils.ResponseMessage;

import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * 生产计划单(HqPlan)表服务接口
 *
 * @author xqj
 * @since 2020-08-11 12:00:13
 */
public interface HqPlanService {

    /**
     * 通过ID查询单条数据
     *
     * @param planId 主键
     * @return 实例对象
     */
    HqPlan queryById(String planId);


    /**
     * 首页增加计划单和计划明旭
     * @param list
     * @param hqPlan
     * @return
     */
    ResponseMessage insertPlanDetails(List<HqPdetail> list, HqPlan hqPlan);

    /**
     * 查询多条数据
     *
     * @return 对象列表
     */
    List<HqPlan> queryAllByLimit(HqPlan hqPlan);


    /**
     * 根据状态查找计划单
     * @param state
     * @return
     */
    List<HqPlan> queryByState(int state);

    /**
     * 获取数量
     * @param hqPlan
     * @return
     */

    int getCount(HqPlan hqPlan);

    /**
     * 批量更新
     * @param list
     * @return
     */
    ResponseMessage updateBatch(List<HqPlan> list);

    /**
     * 新增数据
     *
     * @param hqPlan 实例对象
     * @return 实例对象
     */
    int insert(HqPlan hqPlan);

    /**
     * 修改数据
     *
     * @param hqPlan 实例对象
     * @return 实例对象
     */
    int update(HqPlan hqPlan);

    /**
     * 通过主键删除数据
     *
     * @param planId 主键
     * @return 是否成功
     */
    boolean deleteById(String planId);

    /**
     * 生产订单审核 修改审核状态
     * @param hqPlan   生产计划Bean
     * @param auditRecord  审核表
     * @param session      当前会话
     * @return ResponseMessage
     */
    ResponseMessage updateStatus(HqPlan hqPlan, AuditRecord auditRecord, HttpSession session);
}